const { app, BrowserWindow } = require('electron')
const path = require('path')
const url = require('url')
//获取单例锁
const gotTheLock = app.requestSingleInstanceLock()
if (!gotTheLock) {
    app.quit()
} else {
    // 保持一个对于 window 对象的全局引用，不然，当 JavaScript 被 GC，
    // window 会被自动地关闭
    var mainWindow = null;

    // 当所有窗口被关闭了，退出。
    app.on('window-all-closed', function () {
        // 在 OS X 上，通常用户在明确地按下 Cmd + Q 之前
        // 应用会保持活动状态
        if (process.platform != 'darwin') {
            app.quit();
        }
    });

    // 当 Electron 完成了初始化并且准备创建浏览器窗口的时候
    // 这个方法就被调用
    app.on('ready', function () {
        // 创建浏览器窗口。
        mainWindow = new BrowserWindow({
            width: 800,
            height: 600,
            icon: path.resolve(__dirname, "./build/favicon.ico"),
        });

        // 加载应用的 index
        mainWindow.loadURL("http://127.0.0.1:12301")

        // 打开开发工具
        // mainWindow.openDevTools();

        // 当 window 被关闭，这个事件会被发出
        mainWindow.on('closed', function () {
            // 取消引用 window 对象，如果你的应用支持多窗口的话，
            // 通常会把多个 window 对象存放在一个数组里面，
            // 但这次不是。
            mainWindow = null;
        });
        mainWindow.on('ready-to-show', function () {
            mainWindow.show()
        })
    });
    app.on('second-instance', (event, commandLine, workingDirectory) => {
        // 当运行第二个实例时,将会聚焦到myWindow这个窗口
        if (mainWindow) {
            if (mainWindow.isMinimized()) mainWindow.restore()
            mainWindow.focus()
        }
    })
    app.on('quit', () => {
        app.releaseSingleInstanceLock();//释放所有的单例锁
    })
}